/*============================= MiscUKUTMCoord.m ============================*/
/* MiscUKUTMCoord class contains and supports values representing locations
   in the UK National Grid Universal Transverse Mercator coordinate system
   as of March 1983.

   DMA Release 0.8, Copyright @1993 by Genesis Project, Ltd. All Rights
   Reserved. For further information on terms and conditions see:
		Documentation/GISKit/Agreements-Legal-README

HISTORY
26-Mar-93  Dale Amon at GPL
	   Created.
*/

#import <misckit/miscgiskit.h>

@implementation MiscUKUTMCoord

/*===========================================================================*/
/* Internal methods */
/*===========================================================================*/

static id theUKGrid = nil;

+ makeGrid
  {
    if (!theUKGrid)
	{theUKGrid = [[MiscUTMConstants allocFromZone: [self zone]]
		       initGridName: "UK National Grid"
			 trueOrigin: 49.0 : -2.0
			     inGrid: 400000.0    : -100000.0
			   onSphere: 6377563.396 : 6356256.910
	     centralMeridianScaling: 0.9996012717];
	 [theUKGrid setProtected];
	}
    return theUKGrid;
  }


/*===========================================================================*/
/* Initialization methods. If we don't already have a UTM constants object
   for the UK National Grid, create one instance that all will share and that
   cannot be deleted.

   Constants are from the UK Ordinance Survey document, "Transverse Mercator
   Projection, Constants, Formula and Methods", March 1983

*/
/*===========================================================================*/
/* DESIGNATED INITIALIZER */

-initDescription: (char *) txt
 {return [super initDescription: txt constants: [MiscUKUTMCoord makeGrid]];}


/*---------------------------------------------------------------------------*/
/* Block the designated initializer of our parent class */

-initDescription: (char *) txt constants: anObject
 {	[self error:"  %s class should not be sent '%s' messages\n",
            [[self class] name], sel_getName(_cmd)];
	return self;
 }


/*===========================================================================*/
/* Archive methods */
/*===========================================================================*/
- awake
{	[super awake];
	[constants setUnprotected];
	[constants free];
	[MiscUKUTMCoord makeGrid];
	return self;
}

@end
